package com.lemon.common.service;

import com.github.pagehelper.PageInfo;

import java.io.Serializable;
import java.util.List;

/**
 * 通用 Service
 * 封装服务层最基础的增、删、查、改等操作
 *
 * @author ymh
 * @date 2019-2-26 22:42
 */
public interface BaseService<T> {

    /**
     * 根据主键查询
     *
     * @param id
     * @return
     */
    T get(Serializable id);

    /**
     * 查询1条数据
     *
     * @param entity
     * @return
     */
    T selectOne(T entity);

    /**
     * 查询多条数据
     *
     * @param entity
     * @return
     */
    List<T> select(T entity);

    /**
     * 查询所有
     */
    List<T> selectAll();

    /**
     * 分页查询
     *
     * @param pageNum
     * @param pageSize
     * @param entity
     * @return
     */
    PageInfo<T> selectPage(int pageNum, int pageSize, T entity);

    /**
     * 分页查询
     *
     * @param pageInfo
     * @return
     */
    PageInfo<T> selectPage(PageInfo<T> pageInfo);

    /**
     * 新增
     *
     * @param entity
     */
    int insert(T entity);

    /**
     * 修改
     *
     * @param entity
     */
    int update(T entity);

    /**
     * 删除
     *
     * @param id
     */
    int delete(Serializable id);

    /**
     * 删除
     *
     * @param entity
     */
    int delete(T entity);

}
